﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

/// <summary>
/// Summary description for messagesDB
/// </summary>
public class messagesDB
{
	public messagesDB()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    /// <summary>
    /// Muestra un mensaje en la pantalla.
    /// </summary>
    /// <param name="message">El mensaje a mostrar</param>
    /// <param name="typeMessage">"success", o "error"</param>
    /// <param name="pg">La página que contiene el label, por defecto, el método busca por la id lblMessage, si se quiere, puede suplir una id alternativa en parametro siguiente.</param>
    /// <param name="labelID">(Optional)La id del label en la página.</param>
    public static void displayMessage(string message, string typeMessage, Page pg, String labelID)
    {
        if (string.IsNullOrEmpty(labelID)) labelID = "lblMessage";

        Label lblMessage = (Label)pg.FindControl(labelID);
        displayMessage(message, typeMessage, ref lblMessage);
    }

    /// <summary>
    /// Asigna las propiedades necesarias para convertir un label en la pagina, a un mensaje de usuario.
    /// </summary>
    /// <param name="message">El mensaje a mostrar</param>
    /// <param name="typeMessage">El tipo de mensaje, puede ser success, o error</param>
    /// <param name="lblMessage">El objecto label al que estará asociado el mensaje</param>
    public static void displayMessage(string message, string typeMessage, ref Label lblMessage)
    {
        switch (typeMessage)
        {
            case "success":
                lblMessage.Text += "<div class='message success' style='margin:1px'>" + message + "</div>";
                lblMessage.Visible = true;
                break;
            case "error":
                lblMessage.Text += "<div class='message error' style='margin:1px'>" + message + "</div>";
                lblMessage.Visible = true;
                break;
            case "info":
                lblMessage.Text += "<div class='message info' style='margin:1px'>" + message + "</div>";
                lblMessage.Visible = true;
                break;
        }

        lblMessage.Style.Add("position", "fixed");
        lblMessage.Style.Add("top", "0px");
        lblMessage.Style.Add("width", "90%");
        lblMessage.Style.Add("text-align", "center");
    }


    public static void displayMessage(string message, MessageTypes typeMessage, Page page)
    {
        displayMessage(message, typeMessage, page, "center");
    }


    public static void displayMessage(string message, MessageTypes typeMessage, Page page, string position )
	{
		if (string.IsNullOrEmpty(message)) {
			return;
		}

		if (!page.ClientScript.IsClientScriptBlockRegistered("jGrowl")) {
			page.ClientScript.RegisterClientScriptInclude("jGrowl", HttpContext.Current.Request.ApplicationPath + "/Scripts/jquery.jgrowl.js");
		}

		// Add CSS reference
		HtmlGenericControl myCss = new HtmlGenericControl();
		myCss.TagName = "link";
		myCss.Attributes.Add("type", "text/css");
		myCss.Attributes.Add("rel", "stylesheet");
		myCss.Attributes.Add("href", HttpContext.Current.Request.ApplicationPath + "/css/jquery.jgrowl.css");
		page.Header.Controls.Add(myCss);

		//Remove quotations (") to make sure js syntaxt is not broken
		message = message.Replace("\"", "");
		message = message.Replace("'", "");
		message = message.Replace("\n", "");
		message = message.Replace("\r", "");

		if (typeMessage == MessageTypes.ErrorMessage) {
			page.ClientScript.RegisterStartupScript(page.GetType(), Guid.NewGuid().ToString(), "<script>$(function(){$.jGrowl(\"" + message + "\", {sticky: true, theme: 'error', position: '" + position + "' });});</script>");
		} else {
			page.ClientScript.RegisterStartupScript(page.GetType(), Guid.NewGuid().ToString(), "<script>$(function(){$.jGrowl(\"" + message + "\", {sticky: false, theme: 'success', position: '" + position + "' });});</script>");
		}
	}

    public enum MessageTypes
    {
        SuccessMessage,
        ErrorMessage
    }
  
}
